package cc.rengu.igas.route.common.dao;

import cc.rengu.igas.route.common.entity.MultiDyncDataStatic;

import java.util.ArrayList;
import java.util.List;

/**
 * 多路比例动态数据统计表操作接口
 *
 * @author xlz
 * @version 1.0
 * @date 2020-03-13
 */
public interface MultiDyncDataStaticMapper {

    /**
     * 获取所有多路比例动态统计数据
     *
     * @return 成功返回多路比例动态统计数据列表，失败返回null
     * @throws Exception 异常
     */
    List<MultiDyncDataStatic> getAllMultiDyncDataStatic() throws Exception;

    /**
     * 插入多路比例动态统计数据
     *
     * @param multiDyncDataStatic
     * @return
     * @throws Exception
     */
    int insertMultiDyncDataStatic(MultiDyncDataStatic multiDyncDataStatic) throws Exception;

    /**
     * 删除多路比例动态统计数据
     *
     * @param instId    法人机构号
     * @param ruleId    路由规则id
     * @param channelId 渠道编码
     * @param machineId 机器唯一id
     * @return 0成功，非0失败
     * @throws Exception 异常
     */
    int delMultiDyncDataStatic(String instId, int ruleId, String channelId, String machineId) throws Exception;

    /**
     * 查询多路比例动态统计数据
     *
     * @param instId    法人机构号
     * @param ruleId    路由规则id
     * @param channelId 渠道编码
     * @param machineId 机器唯一id
     * @return
     * @throws Exception
     */
    MultiDyncDataStatic getMultiDyncDataStaticByPk(String instId, int ruleId, String channelId, String machineId) throws Exception;

    /**
     * 设置动态统计数据为无效
     *
     * @param instId    法人机构号
     * @param ruleId    路由规则id
     * @param channelId 渠道编码
     * @param machineId 机器唯一id
     * @throws Exception 失败
     */
    void setMultiDyncDataInvalidByPk(String instId, int ruleId, String channelId, String machineId) throws Exception;

    /**
     * 设置动态统计数据为有效
     *
     * @param instId    法人机构号
     * @param ruleId    路由规则id
     * @param channelId 渠道编码
     * @param machineId 机器唯一id
     * @throws Exception 失败
     */
    void setMultiDyncDataValidByPk(String instId, int ruleId, String channelId, String machineId) throws Exception;

    /**
     * 设置当前多路比例规则的所有通道配额使用量，使用同一个事物
     *
     * @param multiDyncDataRuleArrayList 当前多路比例所有通道
     * @throws Exception 失败
     */
    void setMultiDyncDataUsedByPk(ArrayList<MultiDyncDataStatic> multiDyncDataRuleArrayList) throws Exception;
}
